package com.calvin.study.scheduled;

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;


/**
 * 定时任务
 * 	1、@EnableScheduling 开启定时任务
 * 	2、@Scheduled 开启一个定时任务
 *  3、自动配置类 TaskSchedulingAutoConfiguration
 * 
 * 异步任务
 * 	1、@EnableAsync开启异步任务功能
 *  2、@Async给希望异步执行的方法上标注
 *  3、自动配置类 TaskExecutionAutoConfiguration
 */
@Slf4j
@Component
@EnableScheduling
public class HelloSchedule {
	
	/**
	 * 
	 * 
	 * 1.spring中表达式由6位参数组成
	 * 
	 * 
	 * 2.定时任务不该阻塞(默认是阻塞的)
	 * 	1)、可以让业务以异步的方式提交到线程池执行
	 * 		CompletableFuture.runAsync(()->{
	 *			log.info("hello ...");
	 *		},executor);
	 *	2)、让定时任务异步执行	
	 */
	//@Async
	//@Scheduled(cron="0 * * * * ?")
	public void hello() throws InterruptedException {
		log.info("hello ...");
	}
}
